﻿/**
 * 
 * @file   FITKAcousticsPostData.h
 * @brief  声学后处理管理器
 * @author TanDongYang (tandongyang@diso.cn)
 * @date   2024-11-21
 * 
 */

#ifndef FITKACOUSTICSPOSTDATA_H
#define FITKACOUSTICSPOSTDATA_H

#include "FITKAcousticsPostDataAPI.h"
#include "FITK_Kernel/FITKCore/FITKAbstractDataObject.h"

namespace Acoustics
{
    class FITKAcousticsHDF5Constants;
    class FITKAcousticsHDF5LoadCaseManager;
    class FITKAcousticsContourPlotDataManager;
    class FITKAcousticsCSVParameterManager;
    /**
     * @brief   声学后处理管理器
     * @author  TanDongYang (tandongyang@diso.cn)
     * @date    2024-11-21 
     */
    class FITKAcousticsPostDataAPI FITKAcousticsPostData :
        public Core::FITKAbstractDataObject
    {
    public:
        /**
         * @brief   Construct a new FITKAcousticsPostData object
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-21 
         */
        explicit FITKAcousticsPostData();

        /**
         * @brief   Destroy the FITKAcousticsPostData object
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-21 
         */
        virtual ~FITKAcousticsPostData();

        /**
         * @brief Get the Post Data From AppFrame
         * @return FITKAcousticsPostData*
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-06
         */
        static FITKAcousticsPostData* GetPostDataFromFrame();

        /**
         * @brief   获取HDF5常数集
         * @return  常数集对象
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-21 
         */
        FITKAcousticsHDF5Constants* getFITKAcousticsHDF5Constants() const;

        /**
         * @brief   获取HDF5载荷工况集
         * @return  载荷工况集对象
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-21 
         */
        FITKAcousticsHDF5LoadCaseManager* getFITKAcousticsHDF5LoadCaseManager() const;

        /**
         * @brief   获取后处理云图参数管理器
         * @return  管理器对象
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-25 
         */
        FITKAcousticsContourPlotDataManager* getContourPlotDataManager() const;

        /**
         * @brief    获取求解中间量参数管理器
         * @return   FITKAcousticsCSVParameterManager *
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-02-14
         */
        FITKAcousticsCSVParameterManager* getCSVParameterManager() const;

        /**
         * @brief   清空数据
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-22 
         */
        void clearData();

    private:

        /**
         * @brief   常数集对象
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-21 
         */
        FITKAcousticsHDF5Constants* _constants{};

        /**
         * @brief   载荷工况对象管理器
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-21 
         */
        FITKAcousticsHDF5LoadCaseManager* _loadCaseManager{};

        /**
         * @brief   后处理云图参数对象管理器
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-25 
         */
        FITKAcousticsContourPlotDataManager* _contourPlotDataManager{};
        /**
         * @brief  求解中间量管理器
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2025-02-14
         */
        FITKAcousticsCSVParameterManager* _solverParaManager{};
    };
}

#endif // FITKACOUSTICSPOSTDATA_H
